#pragma once

#include "gate.h"

class ConditionalGate : public Gate
{
private:

	unsigned int xCount;
	unsigned int yCount;
	unsigned int maxXCount;
	unsigned int maxYCount;
	unsigned int startHeight;

public:
	// Constructor
	ConditionalGate(void);

	// Destructor
	~ConditionalGate(void);

	//////////////////////////////////////////////////
	// Accessors:
	inline unsigned int GetStartHeight(void) const { return startHeight; }
	inline unsigned int GetMaxXCount(void) const { return maxXCount; }
	inline unsigned int GetMaxYCount(void) const { return maxYCount; }
	inline unsigned int GetXCount(void) const { return xCount; }
	inline unsigned int GetYCount(void) const { return yCount; }

	//////////////////////////////////////////////////
	// Mutators:
	void SetStartHeight(unsigned int height);
	void SetMaxXCount(unsigned int max);
	void SetMaxYCount(unsigned int max);

	//////////////////////////////////////////////////
	// GameObject Methods:
	void Update(float deltaTime)	override;

	//////////////////////////////////////////////////
	// IListener Methods:
	void HandleEvent(Event* e)		override;
};

